<!doctype html>
<html class="no-js" lang="">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="x-ua-compatible" content="ie=edge">
        <title>nest-learn documentation</title>
        <meta name="description" content="">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <link rel="icon" type="image/x-icon" href="../images/favicon.ico">
	   <link rel="stylesheet" href="../styles/style.css">
        <link rel="stylesheet" href="../styles/dark.css">
    </head>
    <body>
          <script>
               // Blocking script to avoid flickering dark mode
               // Dark mode toggle button
               var useDark = window.matchMedia('(prefers-color-scheme: dark)');
               var darkModeState = useDark.matches;
               var $darkModeToggleSwitchers = document.querySelectorAll('.dark-mode-switch input');
               var $darkModeToggles = document.querySelectorAll('.dark-mode-switch');
               var darkModeStateLocal = localStorage.getItem('compodoc_darkmode-state');

               function checkToggle(check) {
                    for (var i = 0; i < $darkModeToggleSwitchers.length; i++) {
                         $darkModeToggleSwitchers[i].checked = check;
                    }
               }

               function toggleDarkMode(state) {
                    if (window.localStorage) {
                         localStorage.setItem('compodoc_darkmode-state', state);
                    }

                    checkToggle(state);

                    const hasClass = document.body.classList.contains('dark');

                    if (state) {
                         for (var i = 0; i < $darkModeToggles.length; i++) {
                              $darkModeToggles[i].classList.add('dark');
                         }
                         if (!hasClass) {
                              document.body.classList.add('dark');
                         }
                    } else {
                         for (var i = 0; i < $darkModeToggles.length; i++) {
                              $darkModeToggles[i].classList.remove('dark');
                         }
                         if (hasClass) {
                              document.body.classList.remove('dark');
                         }
                    }
               }

               useDark.addEventListener('change', function (evt) {
                    toggleDarkMode(evt.matches);
               });
               if (darkModeStateLocal) {
                    darkModeState = darkModeStateLocal === 'true';
               }
               toggleDarkMode(darkModeState);
          </script>

        <div class="navbar navbar-default navbar-fixed-top d-md-none p-0">
               <div class="d-flex">
                    <a href="../" class="navbar-brand">nest-learn documentation</a>
                    <button type="button" class="btn btn-default btn-menu ion-ios-menu" id="btn-menu"></button>
               </div>
        </div>

        <div class="xs-menu menu" id="mobile-menu">
                <div id="book-search-input" role="search"><input type="text" placeholder="Type to search"></div>            <compodoc-menu></compodoc-menu>
        </div>

        <div class="container-fluid main">
           <div class="row main">
               <div class="d-none d-md-block menu">
                   <compodoc-menu mode="normal"></compodoc-menu>
               </div>
               <!-- START CONTENT -->
               <div class="content module">
                   <div class="content-data">



<ol class="breadcrumb">
    <li class="breadcrumb-item">Modules</li>
    <li class="breadcrumb-item" >AppModule</li>
</ol>

<div class="text-center module-graph-container">
    <div id="module-graph-svg">
        <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.47.0 (20210316.0004)
 -->
<!-- Title: dependencies Pages: 1 -->
<svg width="2171pt" height="211pt"
 viewBox="0.00 0.00 2171.00 211.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 207)">
<title>dependencies</title>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-207 2167,-207 2167,4 -4,4"/>
<text text-anchor="start" x="1060.51" y="-42.4" font-family="Times-12" font-weight="bold" font-size="14.00">Legend</text>
<polygon fill="#ffffb3" stroke="transparent" points="847.5,-10 847.5,-30 867.5,-30 867.5,-10 847.5,-10"/>
<text text-anchor="start" x="871.13" y="-15.4" font-family="Times-12" font-size="14.00"> &#160;Declarations</text>
<polygon fill="#8dd3c7" stroke="transparent" points="960.5,-10 960.5,-30 980.5,-30 980.5,-10 960.5,-10"/>
<text text-anchor="start" x="984.23" y="-15.4" font-family="Times-12" font-size="14.00"> &#160;Module</text>
<polygon fill="#80b1d3" stroke="transparent" points="1046.5,-10 1046.5,-30 1066.5,-30 1066.5,-10 1046.5,-10"/>
<text text-anchor="start" x="1070.28" y="-15.4" font-family="Times-12" font-size="14.00"> &#160;Bootstrap</text>
<polygon fill="#fdb462" stroke="transparent" points="1143.5,-10 1143.5,-30 1163.5,-30 1163.5,-10 1143.5,-10"/>
<text text-anchor="start" x="1167.17" y="-15.4" font-family="Times-12" font-size="14.00"> &#160;Providers</text>
<polygon fill="#fb8072" stroke="transparent" points="1239.5,-10 1239.5,-30 1259.5,-30 1259.5,-10 1239.5,-10"/>
<text text-anchor="start" x="1263.23" y="-15.4" font-family="Times-12" font-size="14.00"> &#160;Exports</text>
<g id="clust1" class="cluster">
<title>cluster_AppModule</title>
<polygon fill="none" stroke="black" stroke-dasharray="1,5" points="8,-70 8,-195 2155,-195 2155,-70 8,-70"/>
</g>
<g id="clust6" class="cluster">
<title>cluster_AppModule_providers</title>
<polygon fill="none" stroke="black" points="2017,-78 2017,-130 2147,-130 2147,-78 2017,-78"/>
</g>
<g id="clust3" class="cluster">
<title>cluster_AppModule_imports</title>
<polygon fill="none" stroke="black" points="16,-78 16,-130 2009,-130 2009,-78 16,-78"/>
</g>
<!-- Aaa2Module -->
<g id="node1" class="node">
<title>Aaa2Module</title>
<polygon fill="#8dd3c7" stroke="black" points="2000.59,-122 1997.59,-126 1976.59,-126 1973.59,-122 1911.41,-122 1911.41,-86 2000.59,-86 2000.59,-122"/>
<text text-anchor="middle" x="1956" y="-99.8" font-family="Times,serif" font-size="14.00">Aaa2Module</text>
</g>
<!-- AppModule -->
<g id="node19" class="node">
<title>AppModule</title>
<polygon fill="#8dd3c7" stroke="black" points="1139.66,-187 1136.66,-191 1115.66,-191 1112.66,-187 1056.34,-187 1056.34,-151 1139.66,-151 1139.66,-187"/>
<text text-anchor="middle" x="1098" y="-164.8" font-family="Times,serif" font-size="14.00">AppModule</text>
</g>
<!-- Aaa2Module&#45;&gt;AppModule -->
<g id="edge1" class="edge">
<title>Aaa2Module&#45;&gt;AppModule</title>
<path fill="none" stroke="black" d="M1956,-122.01C1956,-144.49 1956,-180 1956,-180 1956,-180 1149.67,-180 1149.67,-180"/>
<polygon fill="black" stroke="black" points="1149.67,-176.5 1139.67,-180 1149.67,-183.5 1149.67,-176.5"/>
</g>
<!-- Aaa3Module -->
<g id="node2" class="node">
<title>Aaa3Module</title>
<polygon fill="#8dd3c7" stroke="black" points="1893.59,-122 1890.59,-126 1869.59,-126 1866.59,-122 1804.41,-122 1804.41,-86 1893.59,-86 1893.59,-122"/>
<text text-anchor="middle" x="1849" y="-99.8" font-family="Times,serif" font-size="14.00">Aaa3Module</text>
</g>
<!-- Aaa3Module&#45;&gt;AppModule -->
<g id="edge2" class="edge">
<title>Aaa3Module&#45;&gt;AppModule</title>
<path fill="none" stroke="black" d="M1849,-122.04C1849,-143.66 1849,-177 1849,-177 1849,-177 1149.72,-177 1149.72,-177"/>
<polygon fill="black" stroke="black" points="1149.72,-173.5 1139.72,-177 1149.72,-180.5 1149.72,-173.5"/>
</g>
<!-- Aaa4Module -->
<g id="node3" class="node">
<title>Aaa4Module</title>
<polygon fill="#8dd3c7" stroke="black" points="1786.59,-122 1783.59,-126 1762.59,-126 1759.59,-122 1697.41,-122 1697.41,-86 1786.59,-86 1786.59,-122"/>
<text text-anchor="middle" x="1742" y="-99.8" font-family="Times,serif" font-size="14.00">Aaa4Module</text>
</g>
<!-- Aaa4Module&#45;&gt;AppModule -->
<g id="edge3" class="edge">
<title>Aaa4Module&#45;&gt;AppModule</title>
<path fill="none" stroke="black" d="M1742,-122.13C1742,-142.57 1742,-173 1742,-173 1742,-173 1149.76,-173 1149.76,-173"/>
<polygon fill="black" stroke="black" points="1149.76,-169.5 1139.76,-173 1149.76,-176.5 1149.76,-169.5"/>
</g>
<!-- Aaa5Module -->
<g id="node4" class="node">
<title>Aaa5Module</title>
<polygon fill="#8dd3c7" stroke="black" points="1679.59,-122 1676.59,-126 1655.59,-126 1652.59,-122 1590.41,-122 1590.41,-86 1679.59,-86 1679.59,-122"/>
<text text-anchor="middle" x="1635" y="-99.8" font-family="Times,serif" font-size="14.00">Aaa5Module</text>
</g>
<!-- Aaa5Module&#45;&gt;AppModule -->
<g id="edge4" class="edge">
<title>Aaa5Module&#45;&gt;AppModule</title>
<path fill="none" stroke="black" d="M1635,-122.11C1635,-141.34 1635,-169 1635,-169 1635,-169 1149.69,-169 1149.69,-169"/>
<polygon fill="black" stroke="black" points="1149.69,-165.5 1139.69,-169 1149.69,-172.5 1149.69,-165.5"/>
</g>
<!-- Aaa6Module -->
<g id="node5" class="node">
<title>Aaa6Module</title>
<polygon fill="#8dd3c7" stroke="black" points="1572.59,-122 1569.59,-126 1548.59,-126 1545.59,-122 1483.41,-122 1483.41,-86 1572.59,-86 1572.59,-122"/>
<text text-anchor="middle" x="1528" y="-99.8" font-family="Times,serif" font-size="14.00">Aaa6Module</text>
</g>
<!-- Aaa6Module&#45;&gt;AppModule -->
<g id="edge5" class="edge">
<title>Aaa6Module&#45;&gt;AppModule</title>
<path fill="none" stroke="black" d="M1528,-122.27C1528,-140.56 1528,-166 1528,-166 1528,-166 1150.01,-166 1150.01,-166"/>
<polygon fill="black" stroke="black" points="1150.01,-162.5 1140.01,-166 1150.01,-169.5 1150.01,-162.5"/>
</g>
<!-- AaaModule -->
<g id="node6" class="node">
<title>AaaModule</title>
<polygon fill="#8dd3c7" stroke="black" points="1465.09,-122 1462.09,-126 1441.09,-126 1438.09,-122 1382.91,-122 1382.91,-86 1465.09,-86 1465.09,-122"/>
<text text-anchor="middle" x="1424" y="-99.8" font-family="Times,serif" font-size="14.00">AaaModule</text>
</g>
<!-- AaaModule&#45;&gt;AppModule -->
<g id="edge6" class="edge">
<title>AaaModule&#45;&gt;AppModule</title>
<path fill="none" stroke="black" d="M1424,-122.03C1424,-139.06 1424,-162 1424,-162 1424,-162 1149.95,-162 1149.95,-162"/>
<polygon fill="black" stroke="black" points="1149.95,-158.5 1139.95,-162 1149.95,-165.5 1149.95,-158.5"/>
</g>
<!-- ArticleModule -->
<g id="node7" class="node">
<title>ArticleModule</title>
<polygon fill="#8dd3c7" stroke="black" points="1365.42,-122 1362.42,-126 1341.42,-126 1338.42,-122 1266.58,-122 1266.58,-86 1365.42,-86 1365.42,-122"/>
<text text-anchor="middle" x="1316" y="-99.8" font-family="Times,serif" font-size="14.00">ArticleModule</text>
</g>
<!-- ArticleModule&#45;&gt;AppModule -->
<g id="edge7" class="edge">
<title>ArticleModule&#45;&gt;AppModule</title>
<path fill="none" stroke="black" d="M1316,-122.01C1316,-138.05 1316,-159 1316,-159 1316,-159 1149.77,-159 1149.77,-159"/>
<polygon fill="black" stroke="black" points="1149.77,-155.5 1139.77,-159 1149.77,-162.5 1149.77,-155.5"/>
</g>
<!-- AuthModule -->
<g id="node8" class="node">
<title>AuthModule</title>
<polygon fill="#8dd3c7" stroke="black" points="1248.55,-122 1245.55,-126 1224.55,-126 1221.55,-122 1161.45,-122 1161.45,-86 1248.55,-86 1248.55,-122"/>
<text text-anchor="middle" x="1205" y="-99.8" font-family="Times,serif" font-size="14.00">AuthModule</text>
</g>
<!-- AuthModule&#45;&gt;AppModule -->
<g id="edge8" class="edge">
<title>AuthModule&#45;&gt;AppModule</title>
<path fill="none" stroke="black" d="M1205,-122.12C1205,-136.78 1205,-155 1205,-155 1205,-155 1149.68,-155 1149.68,-155"/>
<polygon fill="black" stroke="black" points="1149.68,-151.5 1139.68,-155 1149.68,-158.5 1149.68,-151.5"/>
</g>
<!-- Bbb2Module -->
<g id="node9" class="node">
<title>Bbb2Module</title>
<polygon fill="#8dd3c7" stroke="black" points="1142.89,-122 1139.89,-126 1118.89,-126 1115.89,-122 1053.11,-122 1053.11,-86 1142.89,-86 1142.89,-122"/>
<text text-anchor="middle" x="1098" y="-99.8" font-family="Times,serif" font-size="14.00">Bbb2Module</text>
</g>
<!-- Bbb2Module&#45;&gt;AppModule -->
<g id="edge9" class="edge">
<title>Bbb2Module&#45;&gt;AppModule</title>
<path fill="none" stroke="black" d="M1098,-122.11C1098,-122.11 1098,-140.99 1098,-140.99"/>
<polygon fill="black" stroke="black" points="1094.5,-140.99 1098,-150.99 1101.5,-140.99 1094.5,-140.99"/>
</g>
<!-- BbbModule -->
<g id="node10" class="node">
<title>BbbModule</title>
<polygon fill="#8dd3c7" stroke="black" points="1035.39,-122 1032.39,-126 1011.39,-126 1008.39,-122 952.61,-122 952.61,-86 1035.39,-86 1035.39,-122"/>
<text text-anchor="middle" x="994" y="-99.8" font-family="Times,serif" font-size="14.00">BbbModule</text>
</g>
<!-- BbbModule&#45;&gt;AppModule -->
<g id="edge10" class="edge">
<title>BbbModule&#45;&gt;AppModule</title>
<path fill="none" stroke="black" d="M994,-122.12C994,-136.78 994,-155 994,-155 994,-155 1046.3,-155 1046.3,-155"/>
<polygon fill="black" stroke="black" points="1046.3,-158.5 1056.3,-155 1046.3,-151.5 1046.3,-158.5"/>
</g>
<!-- CccModule -->
<g id="node11" class="node">
<title>CccModule</title>
<polygon fill="#8dd3c7" stroke="black" points="934.82,-122 931.82,-126 910.82,-126 907.82,-122 853.18,-122 853.18,-86 934.82,-86 934.82,-122"/>
<text text-anchor="middle" x="894" y="-99.8" font-family="Times,serif" font-size="14.00">CccModule</text>
</g>
<!-- CccModule&#45;&gt;AppModule -->
<g id="edge11" class="edge">
<title>CccModule&#45;&gt;AppModule</title>
<path fill="none" stroke="black" d="M894,-122.01C894,-138.05 894,-159 894,-159 894,-159 1046.23,-159 1046.23,-159"/>
<polygon fill="black" stroke="black" points="1046.23,-162.5 1056.23,-159 1046.23,-155.5 1046.23,-162.5"/>
</g>
<!-- CityModule -->
<g id="node12" class="node">
<title>CityModule</title>
<polygon fill="#8dd3c7" stroke="black" points="835.67,-122 832.67,-126 811.67,-126 808.67,-122 752.33,-122 752.33,-86 835.67,-86 835.67,-122"/>
<text text-anchor="middle" x="794" y="-99.8" font-family="Times,serif" font-size="14.00">CityModule</text>
</g>
<!-- CityModule&#45;&gt;AppModule -->
<g id="edge12" class="edge">
<title>CityModule&#45;&gt;AppModule</title>
<path fill="none" stroke="black" d="M794,-122.03C794,-139.06 794,-162 794,-162 794,-162 1046.05,-162 1046.05,-162"/>
<polygon fill="black" stroke="black" points="1046.05,-165.5 1056.05,-162 1046.05,-158.5 1046.05,-165.5"/>
</g>
<!-- LoginUserModule -->
<g id="node13" class="node">
<title>LoginUserModule</title>
<polygon fill="#8dd3c7" stroke="black" points="733.92,-122 730.92,-126 709.92,-126 706.92,-122 614.08,-122 614.08,-86 733.92,-86 733.92,-122"/>
<text text-anchor="middle" x="674" y="-99.8" font-family="Times,serif" font-size="14.00">LoginUserModule</text>
</g>
<!-- LoginUserModule&#45;&gt;AppModule -->
<g id="edge13" class="edge">
<title>LoginUserModule&#45;&gt;AppModule</title>
<path fill="none" stroke="black" d="M674,-122.27C674,-140.56 674,-166 674,-166 674,-166 1046.18,-166 1046.18,-166"/>
<polygon fill="black" stroke="black" points="1046.18,-169.5 1056.18,-166 1046.18,-162.5 1046.18,-169.5"/>
</g>
<!-- RbacUserModule -->
<g id="node14" class="node">
<title>RbacUserModule</title>
<polygon fill="#8dd3c7" stroke="black" points="596.24,-122 593.24,-126 572.24,-126 569.24,-122 481.76,-122 481.76,-86 596.24,-86 596.24,-122"/>
<text text-anchor="middle" x="539" y="-99.8" font-family="Times,serif" font-size="14.00">RbacUserModule</text>
</g>
<!-- RbacUserModule&#45;&gt;AppModule -->
<g id="edge14" class="edge">
<title>RbacUserModule&#45;&gt;AppModule</title>
<path fill="none" stroke="black" d="M539,-122.11C539,-141.34 539,-169 539,-169 539,-169 1045.98,-169 1045.98,-169"/>
<polygon fill="black" stroke="black" points="1045.98,-172.5 1055.98,-169 1045.98,-165.5 1045.98,-172.5"/>
</g>
<!-- RedisModule -->
<g id="node15" class="node">
<title>RedisModule</title>
<polygon fill="#8dd3c7" stroke="black" points="463.94,-122 460.94,-126 439.94,-126 436.94,-122 372.06,-122 372.06,-86 463.94,-86 463.94,-122"/>
<text text-anchor="middle" x="418" y="-99.8" font-family="Times,serif" font-size="14.00">RedisModule</text>
</g>
<!-- RedisModule&#45;&gt;AppModule -->
<g id="edge15" class="edge">
<title>RedisModule&#45;&gt;AppModule</title>
<path fill="none" stroke="black" d="M418,-122.13C418,-142.57 418,-173 418,-173 418,-173 1046.23,-173 1046.23,-173"/>
<polygon fill="black" stroke="black" points="1046.23,-176.5 1056.23,-173 1046.23,-169.5 1046.23,-176.5"/>
</g>
<!-- SessionModule -->
<g id="node16" class="node">
<title>SessionModule</title>
<polygon fill="#8dd3c7" stroke="black" points="354.33,-122 351.33,-126 330.33,-126 327.33,-122 251.67,-122 251.67,-86 354.33,-86 354.33,-122"/>
<text text-anchor="middle" x="303" y="-99.8" font-family="Times,serif" font-size="14.00">SessionModule</text>
</g>
<!-- SessionModule&#45;&gt;AppModule -->
<g id="edge16" class="edge">
<title>SessionModule&#45;&gt;AppModule</title>
<path fill="none" stroke="black" d="M303,-122.04C303,-143.66 303,-177 303,-177 303,-177 1046.1,-177 1046.1,-177"/>
<polygon fill="black" stroke="black" points="1046.1,-180.5 1056.1,-177 1046.1,-173.5 1046.1,-180.5"/>
</g>
<!-- UserModule -->
<g id="node17" class="node">
<title>UserModule</title>
<polygon fill="#8dd3c7" stroke="black" points="233.98,-122 230.98,-126 209.98,-126 206.98,-122 148.02,-122 148.02,-86 233.98,-86 233.98,-122"/>
<text text-anchor="middle" x="191" y="-99.8" font-family="Times,serif" font-size="14.00">UserModule</text>
</g>
<!-- UserModule&#45;&gt;AppModule -->
<g id="edge17" class="edge">
<title>UserModule&#45;&gt;AppModule</title>
<path fill="none" stroke="black" d="M191,-122.01C191,-144.49 191,-180 191,-180 191,-180 1046.07,-180 1046.07,-180"/>
<polygon fill="black" stroke="black" points="1046.07,-183.5 1056.07,-180 1046.07,-176.5 1046.07,-183.5"/>
</g>
<!-- WinstonModule -->
<g id="node18" class="node">
<title>WinstonModule</title>
<polygon fill="#8dd3c7" stroke="black" points="130.49,-122 127.49,-126 106.49,-126 103.49,-122 23.51,-122 23.51,-86 130.49,-86 130.49,-122"/>
<text text-anchor="middle" x="77" y="-99.8" font-family="Times,serif" font-size="14.00">WinstonModule</text>
</g>
<!-- WinstonModule&#45;&gt;AppModule -->
<g id="edge18" class="edge">
<title>WinstonModule&#45;&gt;AppModule</title>
<path fill="none" stroke="black" d="M77,-122.15C77,-145.76 77,-184 77,-184 77,-184 1046.07,-184 1046.07,-184"/>
<polygon fill="black" stroke="black" points="1046.07,-187.5 1056.07,-184 1046.07,-180.5 1046.07,-187.5"/>
</g>
<!-- AppService -->
<g id="node20" class="node">
<title>AppService</title>
<ellipse fill="#fdb462" stroke="black" cx="2082" cy="-104" rx="56.74" ry="18"/>
<text text-anchor="middle" x="2082" y="-99.8" font-family="Times,serif" font-size="14.00">AppService</text>
</g>
<!-- AppService&#45;&gt;AppModule -->
<g id="edge19" class="edge">
<title>AppService&#45;&gt;AppModule</title>
<path fill="none" stroke="black" d="M2082,-122.15C2082,-145.76 2082,-184 2082,-184 2082,-184 1149.97,-184 1149.97,-184"/>
<polygon fill="black" stroke="black" points="1149.97,-180.5 1139.97,-184 1149.97,-187.5 1149.97,-180.5"/>
</g>
</g>
</svg>

    </div>
    <i id="fullscreen" class="icon ion-ios-resize module-graph-fullscreen-btn" aria-hidden="true"></i>
    <div class="btn-group size-buttons">
        <button id="zoom-in" class="btn btn-default btn-sm">Zoom in</button>
        <button id="reset" class="btn btn-default btn-sm">Reset</button>
        <button id="zoom-out" class="btn btn-default btn-sm">Zoom out</button>
    </div>
</div>
<script src="../js/libs/svg-pan-zoom.min.js"></script>
<script src="../js/svg-pan-zoom.controls.js"></script>

<ul class="nav nav-tabs" role="tablist">
    <li class="nav-item">
        <a href="#info" 
            class="nav-link"
            class="nav-link active"
            role="tab" id="info-tab" data-bs-toggle="tab" data-link="info">Info</a>
    </li>
    <li class="nav-item">
        <a href="#source" 
            class="nav-link"
            
            role="tab" id="source-tab" data-bs-toggle="tab" data-link="source">Source</a>
    </li>
</ul>

<div class="tab-content">
    <div class="tab-pane fade active in" id="info">

        <p class="comment">
            <h3>File</h3>
        </p>
        <p class="comment">
            <code>src/app.module.ts</code>
        </p>





        <div class="container-fluid module">
            <div class="row">
                <div class="col-sm-3">
                    <h3>Providers<a href="https://angular.io/api/core/NgModule#providers" target="_blank" rel="noopener noreferrer"
                            title="Official documentation about module providers"><span class="icon ion-ios-information-circle-outline"></a></h3>
                    <ul class="list-group">
                        <li class="list-group-item">
                            <a href="../injectables/AppService.html">AppService</a>
                        </li>
                    </ul>
                </div>
                <div class="col-sm-3">
                    <h3>Imports<a href="https://angular.io/api/core/NgModule#imports" target="_blank" rel="noopener noreferrer"
                            title="Official documentation about module imports"><span
                                class="icon ion-ios-information-circle-outline"></a></h3>
                    <ul class="list-group">
                        <li class="list-group-item">
                            <a href="../modules/Aaa2Module.html">Aaa2Module</a>
                        </li>
                        <li class="list-group-item">
                            <a href="../modules/Aaa3Module.html">Aaa3Module</a>
                        </li>
                        <li class="list-group-item">
                            <a href="../modules/Aaa4Module.html">Aaa4Module</a>
                        </li>
                        <li class="list-group-item">
                            <a href="../modules/Aaa5Module.html">Aaa5Module</a>
                        </li>
                        <li class="list-group-item">
                            <a href="../modules/Aaa6Module.html">Aaa6Module</a>
                        </li>
                        <li class="list-group-item">
                            <a href="../modules/AaaModule.html">AaaModule</a>
                        </li>
                        <li class="list-group-item">
                            <a href="../modules/ArticleModule.html">ArticleModule</a>
                        </li>
                        <li class="list-group-item">
                            <a href="../modules/AuthModule.html">AuthModule</a>
                        </li>
                        <li class="list-group-item">
                            <a href="../modules/Bbb2Module.html">Bbb2Module</a>
                        </li>
                        <li class="list-group-item">
                            <a href="../modules/BbbModule.html">BbbModule</a>
                        </li>
                        <li class="list-group-item">
                            <a href="../modules/CccModule.html">CccModule</a>
                        </li>
                        <li class="list-group-item">
                            <a href="../modules/CityModule.html">CityModule</a>
                        </li>
                        <li class="list-group-item">
                            <a href="../modules/LoginUserModule.html">LoginUserModule</a>
                        </li>
                        <li class="list-group-item">
                            <a href="../modules/RbacUserModule.html">RbacUserModule</a>
                        </li>
                        <li class="list-group-item">
                            <a href="../modules/RedisModule.html">RedisModule</a>
                        </li>
                        <li class="list-group-item">
                            <a href="../modules/SessionModule.html">SessionModule</a>
                        </li>
                        <li class="list-group-item">
                            <a href="../modules/UserModule.html">UserModule</a>
                        </li>
                        <li class="list-group-item">
                            <a href="../modules/WinstonModule.html">WinstonModule</a>
                        </li>
                    </ul>
                </div>
            </div>
        </div>


    </div>


    <div class="tab-pane fade  tab-source-code" id="source">
        <pre class="line-numbers compodoc-sourcecode"><code class="language-typescript">import { Module } from &#x27;@nestjs/common&#x27;;
import { AppController } from &#x27;./app.controller&#x27;;
import { AppService } from &#x27;./app.service&#x27;;
import { AaaModule } from &#x27;./aaa/aaa.module&#x27;;
import { BbbModule } from &#x27;./bbb/bbb.module&#x27;;
import { CccModule } from &#x27;./ccc/ccc.module&#x27;;
import { WinstonModule } from &#x27;./winston/winston.module&#x27;;
import * as chalk from &#x27;chalk&#x27;;
import { createLogger, format, Logger, transports } from &#x27;winston&#x27;;
import { UserModule } from &#x27;./user/user.module&#x27;;
import { TypeOrmModule } from &#x27;@nestjs/typeorm&#x27;;
import { User } from &#x27;./user/entities/user.entity&#x27;;
import { CityModule } from &#x27;./city/city.module&#x27;;
import { City } from &#x27;./city/entities/city.entity&#x27;;
import { ArticleModule } from &#x27;./article/article.module&#x27;;
import { Article } from &#x27;./article/entities/article.entity&#x27;;
import { ConfigModule } from &#x27;@nestjs/config&#x27;;
import * as path from &#x27;path&#x27;;
import config from &#x27;./config&#x27;;
import config2 from &#x27;./config2&#x27;;
import { createClient } from &#x27;redis&#x27;;
import { JwtModule } from &#x27;@nestjs/jwt&#x27;;
import { LoginUserModule } from &#x27;./login-user/login-user.module&#x27;;
import { LoginUser } from &#x27;./login-user/entities/login-user.entity&#x27;;
import { Permission } from &#x27;./login-user/entities/permission.entity&#x27;;
import { RedisModule } from &#x27;./redis/redis.module&#x27;;
import { RbacUserModule } from &#x27;./rbac_user/rbac_user.module&#x27;;
import { RbacUser } from &#x27;./rbac_user/entities/rbac_user.entity&#x27;;
import { RbacRole } from &#x27;./rbac_user/entities/rbac_role.entity&#x27;;
import { RbacPermission } from &#x27;./rbac_user/entities/rbac_permission.entity&#x27;;
import { Aaa2Module } from &#x27;./aaa2/aaa2.module&#x27;;
import { Bbb2Module } from &#x27;./bbb2/bbb2.module&#x27;;
import { APP_GUARD } from &#x27;@nestjs/core&#x27;;
import { RbacLoginGuard } from &#x27;./rbac-login.guard&#x27;;
import { RbacPermissionGuard } from &#x27;./rbac-permission.guard&#x27;;
import { Aaa3Module } from &#x27;./aaa3/aaa3.module&#x27;;
import { AuthModule } from &#x27;./auth/auth.module&#x27;;
import { JwtAuthGuard } from &#x27;./auth/JwtAuthGuard&#x27;;
import { GithubUser } from &#x27;./login-user/entities/github-user.entity&#x27;;
import { SessionModule } from &#x27;./session/session.module&#x27;;
import { Aaa4Module } from &#x27;./aaa4/aaa4.module&#x27;;
import { Aaa5Module } from &#x27;./aaa5/aaa5.module&#x27;;
import { Aaa6Module } from &#x27;./aaa6/aaa6.module&#x27;;

@Module({
  imports: [
    LoginUserModule,
    AaaModule,
    BbbModule,
    CccModule.register({ aaa: 1, bbb: &#x27;2&#x27;, isGlobal: true }),
    WinstonModule.forRoot({
      level: &#x27;debug&#x27;,
      transports: [
        new transports.Console({
          format: format.combine(
            format.colorize(),
            format.printf(({ context, level, message, time }) &#x3D;&gt; {
              const appStr &#x3D; chalk.green(&#x60;[NEST]&#x60;);
              const contextStr &#x3D; chalk.yellow(&#x60;[${context}]&#x60;);
              return &#x60;${appStr} ${time} ${level} ${contextStr} ${message}&#x60;;
            }),
          ),
        }),
        new transports.File({
          format: format.combine(format.timestamp(), format.json()),
          filename: &#x27;111.log&#x27;,
          dirname: &#x27;log&#x27;,
        }),
      ],
    }),
    UserModule,
    ConfigModule.forRoot({
      isGlobal: true,
      // envFilePath: [path.join(process.cwd(), &#x27;.aaa.env&#x27;), path.join(process.cwd(), &#x27;.env&#x27;), ],
      load: [config2, config],
    }),
    TypeOrmModule.forRoot({
      type: &#x27;mysql&#x27;,
      host: &#x27;localhost&#x27;,
      // host: &#x27;10.1.22.152&#x27;,
      // host: &#x27;mysql-container&#x27;,
      port: 3305,
      username: &#x27;root&#x27;,
      password: &#x27;111111&#x27;,
      // database: &#x27;nest-migration-test&#x27;,
      database: &#x27;login_test&#x27;,
      synchronize: true,
      logging: true,
      // entities: [User],
      // entities: [Article],
      // entities: [LoginUser, Permission], // acl权限控制
      entities: [LoginUser, Permission, RbacUser, RbacRole, RbacPermission, GithubUser], 
      poolSize: 10,
      connectorPackage: &#x27;mysql2&#x27;,
      extra: {
        authPlugin: &#x27;sha256_password&#x27;,
      },
    }),
    CityModule,
    ArticleModule,
    JwtModule.register({
      global: true,
      secret: &#x27;ABIN&#x27;,
      signOptions: {
        expiresIn: &#x27;7d&#x27;, // 过期时间
      },
    }),
    RedisModule,
    RbacUserModule,
    Aaa2Module,
    Bbb2Module,
    Aaa3Module,
    AuthModule,
    SessionModule,
    Aaa4Module,
    Aaa5Module,
    Aaa6Module,
    
    // JwtModule.registerAsync({
    //   async useFactory() {
    //     await 111
    //     return {
    //       secret: &#x27;ABIN&#x27;,
    //       signOptions: {
    //         expiresIn: &#x27;7d&#x27;
    //       }
    //     }
    //   }
    // }
    // CccModule.registerAsync({
    //   async useFactory(...args) {
    //       await 111
    //       return {
    //         aaa: 222,
    //         bbb: &#x27;bbb&#x27;,

    //       }
    //   },
    // })
  ],
  controllers: [AppController],
  providers: [
    AppService,
    // {
    //   provide: &#x27;REDIS_CLIENT&#x27;,
    //   async useFactory(...args) {
    //     const client &#x3D; createClient({
    //       socket: {
    //         host: &#x27;localhost&#x27;,
    //         port: 6379,
    //       },
    //     });
    //     await client.connect();
    //     return client;
    //   },
    // },
    {
      provide: APP_GUARD,
      useClass: RbacLoginGuard
    },
    {
      provide: APP_GUARD,
      useClass: RbacPermissionGuard
    },
    // {
    //   provide: APP_GUARD,
    //   useClass: JwtAuthGuard
    // }
  ],
})
export class AppModule {}
</code></pre>
    </div>
</div>

















                   </div><div class="search-results">
    <div class="has-results">
        <h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
        <ul class="search-results-list"></ul>
    </div>
    <div class="no-results">
        <h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
    </div>
</div>
</div>
               <!-- END CONTENT -->
           </div>
       </div>

          <label class="dark-mode-switch">
               <input type="checkbox">
               <span class="slider">
                    <svg class="slider-icon" viewBox="0 0 24 24" fill="none" height="20" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="20" xmlns="http://www.w3.org/2000/svg">
                    <path d="M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z"></path>
                    </svg>
               </span>
          </label>

       <script>
            var COMPODOC_CURRENT_PAGE_DEPTH = 1;
            var COMPODOC_CURRENT_PAGE_CONTEXT = 'module';
            var COMPODOC_CURRENT_PAGE_URL = 'AppModule.html';
            var MAX_SEARCH_RESULTS = 15;
       </script>

       <script>
               $darkModeToggleSwitchers = document.querySelectorAll('.dark-mode-switch input');
               checkToggle(darkModeState);
               if ($darkModeToggleSwitchers.length > 0) {
                    for (var i = 0; i < $darkModeToggleSwitchers.length; i++) {
                         $darkModeToggleSwitchers[i].addEventListener('change', function (event) {
                              darkModeState = !darkModeState;
                              toggleDarkMode(darkModeState);
                         });
                    }
               }
          </script>

       <script src="../js/libs/custom-elements.min.js"></script>
       <script src="../js/libs/lit-html.js"></script>

       <script src="../js/menu-wc.js" defer></script>
       <script nomodule src="../js/menu-wc_es5.js" defer></script>

       <script src="../js/libs/bootstrap-native.js"></script>

       <script src="../js/libs/es6-shim.min.js"></script>
       <script src="../js/libs/EventDispatcher.js"></script>
       <script src="../js/libs/promise.min.js"></script>
       <script src="../js/libs/zepto.min.js"></script>

       <script src="../js/compodoc.js"></script>

       <script src="../js/tabs.js"></script>
       <script src="../js/menu.js"></script>
       <script src="../js/libs/clipboard.min.js"></script>
       <script src="../js/libs/prism.js"></script>
       <script src="../js/sourceCode.js"></script>
          <script src="../js/search/search.js"></script>
          <script src="../js/search/lunr.min.js"></script>
          <script src="../js/search/search-lunr.js"></script>
          <script src="../js/search/search_index.js"></script>
       <script src="../js/lazy-load-graphs.js"></script>


    </body>
</html>
